#ifndef _CASTS_CPP
#define _CASTS_CPP

#include "utils.h"
#include "mtypes.h"

double calcNorm(fftw_complex* PsiT, int n3, double dX)
{
	double norm=0.;
	FOR(i,n3)
	norm+=PsiT[i][0]*PsiT[i][0]+PsiT[i][1]*PsiT[i][1];
	return norm*dX*dX*dX;
}

void calcCast(fftw_complex* PsiT, fftw_complex* PsiPT, int n3, double dX, fftw_complex& ret)
{
	ret[0] = ret[1] = 0.;
	FOR(i,n3) {
		ret[0] = ret[0] + PsiPT[i][0]*PsiT[i][0]+PsiPT[i][1]*PsiT[i][1];
		ret[1] = ret[1] + PsiPT[i][0]*PsiT[i][1]-PsiPT[i][1]*PsiT[i][0];
	}
	ret[0] *= dX*dX*dX; ret[1] *= dX*dX*dX;
}

#endif
